package home

import dominio.Zombie
import java.util.List
import org.uqbar.commons.model.CollectionBasedHome
import org.uqbar.commons.utils.Observable

@Observable
class HomeZombies extends CollectionBasedHome<Zombie> {
	new() {
		this.init
	}

	def void init() {
		this.create("Zombie con balde", 50, 50, "tiene un balde en la cabeza")
		this.create("Mariscal", 80, 80, "es mariscal")
		this.create("Zombie Verdulero", 70, 70, "manda fruta")

	}

	def void create(String nombre, int vida, int potencia, String descripcion) {
		var zombie = new Zombie
		zombie.nombre = nombre
		zombie.vida = vida
		zombie.potencia = potencia
		zombie.descripcion = descripcion
		zombie.dineroRecompensa = zombie.vida / 3
		this.create(zombie)
	}

	override def getCriterio(Zombie example) {
		null
	}

	def List<Zombie> getZombies() {
		allInstances
	}

	def Zombie get(String descripcion) {
		zombies.findFirst[zombie|zombie.descripcion.equals(descripcion)]
	}

	override createExample() {
		new Zombie()
	}

	override def Class<Zombie> getEntityType() {
		typeof(Zombie)
	}

	def search(String nombre) {
		allInstances.filter[zombie|this.match(nombre, zombie.nombre)].toList
	}

	def match(Object expectedValue, Object realValue) {
		if (expectedValue == null) {
			return true
		}
		if (realValue == null) {
			return false
		}
		realValue.toString().toLowerCase().contains(expectedValue.toString().toLowerCase())
	}

}
